1. Field of the Invention
The present invention generally relates to the prioritization of resources for developing and maintaining a system. More specifically, a stochastic optimization framework provides a method for allocating effort at different stages of the product lifecycle to meet a specified target system objective so that these resources are allocated to system components in a way that most efficiently achieves a target for a system attribute, such as reliability or performance.
2. Description of the Related Art
A problem addressed by the present invention involves the question of how to prioritize development resources so that they are allocated to system components in a way that most efficiently achieves a target for a system attribute, such as reliability or performance. These two attributes are presented only for purpose of discussion, since other system attributes can also be addressed by this method. As non-limiting examples, capability, maintainability, serviceability, upgrade capability, availability, usability, and replaceability are other system attributes that a system resource allocation decision maker might wish to consider in the resource allocation process.
Planning involves attention to components that will make up the system, and the system metric is determined by inheritance combining attributes of the components (e.g., system reliability as a function of components) as well as intended use (e.g., highway versus city driving for usage of an automobile).
This instance of the problem assumes that the observable system attribute (in operation) will be a function of the realized usage pattern, also called a “usage profile” or “operational profile.”
In practice, the methods for targeted engineered testing generally assume a known usage environment. In practice, the usage environment may be uncertain or may be dynamic. This is especially important as the high-level componentization of software systems becomes more common. By high-level, it is meant that what were once considered as individual products are now bundled together in different ways and sold as software systems. An example is the componentization of IBM software offerings, which bundles key elements of products such as its database products, security products, and web application development products together so that they are quickly deployable in a customized setting.
The usage of the components may vary widely from setting to setting, but reliability targets for the individual components need to be allocated so that overall reliability targets are achieved across a range of settings. Allocation methods help to move resource decisions earlier in the development stages, to design, where uncertainty about usage may be even higher than in testing. However, early design focus may have the greatest potential to achieve system targets most efficiently.
One known solution to the optimal allocation problem is to assign all components a common attribute target corresponding to the system target and operation mission time. This may not be the most efficient means for achieving the system target, since components which are more costly to develop may have lesser impact on the system attribute (i.e., may only be used rarely given the usage environment and system architecture). Solutions for optimal reliability allocation to software components for well known software economic cost models are given in a paper by Helander, Zhao and Ohlsson (“Planning Models for Software Reliability and Cost,” IEEE Transactions on Software Engineering, Vol. 24, No. 6, June 1998, pp.420-434). The drawback of these solutions is that they consider the usage profile as deterministic and more cost efficient allocations of resources may exist to achieve the same system target when component usage is not uniform.
The consideration of varying usage profiles has been addressed only on an ad-hoc or simplistic basis. For example, Poore, Mills and Mutchler (“Planning and Certifying Software System Reliability,” IEEE Software, Vol. 10, No. 1, pp. 88-99, 1993) used a spreadsheet approach to consider various strategies for allocating reliability to software modules assuming an operational profile specified up to an fixed allowable variation, where the allowed variation is the same across all operations. Leung (“Software reliability planning models under an uncertain operational profile,” Journal of the Operational Research Society, Vol. 48, 401-411, 1997) uses a nonlinear optimization approach to solve the same problem, focusing primarily on software modules as components of a single software entity, where the focus is on resource allocation for testing.
Currently, there are no known methods for cost effective development planning that take into account uncertainties about the ultimate usage environment in a unified way, including development effort earlier in a product's lifecycle.
Thus, in the art of modeling system design and providing product lifecycle resource allocations, a need exists for a technique that includes the uncertainty of the usage.